/*
 * 2013-9-16:下午10:05:02
 * Keen
 */
package com.razdev.mtk.string;

import java.util.List;

/**
 * String 封装类接口 <br>
 * 2013-9-16:下午10:05:02
 * 
 * @author Keen<br>
 */
public interface IMString {

	/**
	 * get the length of this string <br>
	 * 2013-9-16:下午9:54:49<br>
	 * <br>
	 * 
	 * @return
	 */
	public abstract Integer length();

	/**
	 * 合并字符串 <br>
	 * 2013-9-16:下午9:59:35<br>
	 * <br>
	 * 
	 * @param strategy
	 *          合并策略,其值参考{@link MStringMergeStrategy}
	 * @param a 第一个String参数
	 * @param b 第二个String参数
	 * @return
	 */
	public abstract IMString merge(Integer strategy, String a, String b);

	/**
	 * 合并,把b追加到a尾部 <br>
	 * 2013-9-16:下午10:03:06<br>
	 * <br>
	 * 
	 * @param a 第一个String参数
	 * @param b 第二个String参数
	 * @return
	 */
	public abstract IMString merge(String a, String b);
	
	/**
	 * 向某个字符串中插入一段字符串
	 * <br>
	 * 2013-9-16:下午10:07:21<br>
	 * <br>
	 * @param value
	 * @param index
	 * @return
	 */
	public abstract IMString insert(String value ,int index);

	/**
	 * 获得list形态的char数组 <br>
	 * 2013-9-16:下午9:48:32<br>
	 * <br>
	 * 
	 * @return
	 */
	public abstract List<char[]> toCharList();

	/**
	 * 获得char形态的char数组 <br>
	 * 2013-9-16:下午9:48:45<br>
	 * <br>
	 * 
	 * @return
	 */
	public abstract char[] toCharArray();

	public abstract String toString();

}